<?php
$config = array(
    "private_key_bits" => 1024,           //字节数  512 1024 2048  4096 等
    "private_key_type" => OPENSSL_KEYTYPE_RSA,   //加密类型
);

//1.创建公钥和私钥  返回资源
$res = openssl_pkey_new($config);

//从得到的资源中获取私钥  并把私钥赋给$privKey
openssl_pkey_export($res, $privKey);
//从得到的资源中获取私钥  并把私钥赋给$pubKey
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];

$prires = fopen('./private_key.pem','a');
fwrite($prires,$privKey);
fclose($prires);

$pubres = fopen('./public_key.pem','a');
fwrite($pubres,$pubKey);
fclose($pubres);die;


$privKey = file_get_contents( 'private_key.pem');
$pubKey = file_get_contents( 'public_key.pem');
//2.加密解密数据 要加密的数据
$data = 'plaintext data goes here';

//对$data进行加密 要加密的数据字符串 得到加密后的数据 加密所需要的公钥
openssl_private_encrypt($data, $encrypted, $privKey);
echo base64_encode($encrypted);

//对加密后的数据进行解密 解密的数据 得到解密后的数据 解密所需要的私钥
$decrypted = base64_decode($encrypted);
openssl_public_decrypt($encrypted, $decrypted, $pubKey);
echo $decrypted;
